The present invention relates to the field of computer systems. In particular, it relates to computer systems in which xe2x80x9cvirtual memoryxe2x80x9d is used to extend the available RAM.
An exemplary computer system is shown in FIG. 1. The computer system 100 includes a central processing unit (CPU) 101 for running applications, a disk storage 102, a RAM 103, and a user interface 104. Random access memory, or RAM, is used in computer systems to store current processesxe2x80x94the code for currently-running applications and the data used by those applications. An operating system 105, a memory management system 106, which may be part of the operating system 105, a file system 107 and applications programs 108 are typically stored in RAM 103. Applications and data that are not currently running are generally stored in disk storage 102, which cannot be accessed as quickly as RAM 103.
Many computer systems use xe2x80x9cvirtual memoryxe2x80x9d when the available RAM 103 is insufficient to store the code for all current processes. Virtual memory is a disk file or files in disk storage 102 that serves as an extension of RAM 103. Areas, or pages, of RAM 103 that are less frequently used are written to the paging file in virtual memory by the memory management system 106. The pages are read back into RAM 103 by the memory management system 106 when they are needed.
This approach is efficient when the total amount of memory that is frequently used by applications does not exceed the amount of RAM available. However, if the total amount of frequently-used memory, also called actively-used memory, is more than the amount of RAM available, the memory management system must frequently read and write pages from virtual memory disk files into RAM. This is a relatively slow and time-consuming process, with the result that efficiency of memory access is drastically reduced.
Applications that monitor server utilization need to be able to assess utilization of basic resources, such as RAM, disk storage and CPU. Monitoring RAM utilization is difficult. Prior art approaches include monitoring the percentage of RAM utilization, and monitoring paging activity.
Percentage of RAM utilization is not a useful indicator, however, because a high percentage of RAM utilization may mean that there is insufficient RAM and more is needed, which indicates that the system is not operating efficiently. Alternatively, it may mean only that nearly all the available RAM is being actively used, but no more is needed, which indicates that the system is operating efficiently. In addition, percentage of RAM utilization does not indicate how much additional RAM might be required.
Paging activity may indicate that insufficient RAM is available and more is required. However, a sharp increase in paging activity may merely indicate that new processes have been started and others terminated, so that some applications and data are being moved into RAM. Furthermore, paging activity does not give any indication of how much additional RAM is required to avoid excessive paging and resulting inefficiency.
Accordingly, it would be desirable to provide an approach to monitoring RAM use that indicates whether the system has insufficient RAM. It would additionally be desirable for this approach to indicate, where RAM is insufficient, how much additional RAM should be added to the system for efficient RAM usage.
A method and apparatus is provided in which memory management parameters are extracted from the memory management system, and used to calculate an estimate of the additional RAM needed to avoid excessive paging. If this additional memory requirement is greater than zero, or some small threshold, for a sustained period, the system is alerted that additional RAM is required.
In a preferred embodiment, the memory management parameters include the rate of hard faults, sometimes called major faults, FHF, and the rate of soft faults, sometimes called minor faults, FSF. These parameters,along with the quantities of RAM marked as available and actually in use, are used to estimate the number of pages in virtual memory that are needed often but that do not fit in RAM: the xe2x80x9cmemory demand,xe2x80x9d or xe2x80x9cmemory deficit.xe2x80x9d
In particular, the memory demand, NO, is estimated by:
xe2x80x83{haeck over (N)}O=C*NU*FHF/FSF
where NU is the number of pages which the memory management system has designated as in use by current processes, and C (where C is a factor that may be multiplied by the right-hand side of the above equation) is a parameter indicating whether there is a page-writing activity. The parameter C is set equal to 1 if there is page-writing activity, and is 0 otherwise.